diff --git a/system/libraries/Table.php b/system/libraries/Table.php
index b77fcf1..1d43208 100644
--- a/system/libraries/Table.php
+++ b/system/libraries/Table.php
@@ -117,7 +117,7 @@
 	/**
 	 * Set the template
 	 *
-	 * @param	array
+	 * @param	array	$template
 	 * @return	bool
 	 */
 	public function set_template($template)
@@ -139,12 +139,13 @@
 	 * Can be passed as an array or discreet params
 	 *
 	 * @param	mixed
-	 * @return	void
+	 * @return	CI_Table
 	 */
 	public function set_heading($args = array())
 	{
 		$args = func_get_args();
 		$this->heading = $this->_prep_args($args);
+		return $this;
 	}
 
 	// --------------------------------------------------------------------
@@ -155,9 +156,9 @@
 	 * columns. This allows a single array with many elements to be
 	 * displayed in a table that has a fixed column count.
 	 *
-	 * @param	array
-	 * @param	int
-	 * @return	void
+	 * @param	array	$array
+	 * @param	int	$col_limit
+	 * @return	array
 	 */
 	public function make_columns($array = array(), $col_limit = 0)
 	{
@@ -202,12 +203,13 @@
 	 *
 	 * Can be passed as an array or discreet params
 	 *
-	 * @param	mixed
-	 * @return	void
+	 * @param	mixed	$value
+	 * @return	CI_Table
 	 */
 	public function set_empty($value)
 	{
 		$this->empty_cells = $value;
+		return $this;
 	}
 
 	// --------------------------------------------------------------------
@@ -218,12 +220,13 @@
 	 * Can be passed as an array or discreet params
 	 *
 	 * @param	mixed
-	 * @return	void
+	 * @return	CI_Table
 	 */
 	public function add_row($args = array())
 	{
 		$args = func_get_args();
 		$this->rows[] = $this->_prep_args($args);
+		return $this;
 	}
 
 	// --------------------------------------------------------------------
@@ -271,8 +274,8 @@
 	/**
 	 * Add a table caption
 	 *
-	 * @param	string
-	 * @return	void
+	 * @param	string	$caption
+	 * @return	CI_Table
 	 */
 	public function set_caption($caption)
 	{
@@ -284,7 +287,7 @@
 	/**
 	 * Generate the table
 	 *
-	 * @param	mixed
+	 * @param	mixed	$table_data
 	 * @return	string
 	 */
 	public function generate($table_data = NULL)
@@ -417,13 +420,14 @@
 	/**
 	 * Clears the table arrays.  Useful if multiple tables are being generated
 	 *
-	 * @return	void
+	 * @return	CI_Table
 	 */
 	public function clear()
 	{
-		$this->rows		= array();
-		$this->heading		= array();
-		$this->auto_heading	= TRUE;
+		$this->rows = array();
+		$this->heading = array();
+		$this->auto_heading = TRUE;
+		return $this;
 	}
 
 	// --------------------------------------------------------------------
@@ -528,31 +532,31 @@
 	protected function _default_template()
 	{
 		return array(
-				'table_open'		=> '<table border="0" cellpadding="4" cellspacing="0">',
+			'table_open'		=> '<table border="0" cellpadding="4" cellspacing="0">',
 
-				'thead_open'		=> '<thead>',
-				'thead_close'		=> '</thead>',
+			'thead_open'		=> '<thead>',
+			'thead_close'		=> '</thead>',
 
-				'heading_row_start'	=> '<tr>',
-				'heading_row_end'	=> '</tr>',
-				'heading_cell_start'	=> '<th>',
-				'heading_cell_end'	=> '</th>',
+			'heading_row_start'	=> '<tr>',
+			'heading_row_end'	=> '</tr>',
+			'heading_cell_start'	=> '<th>',
+			'heading_cell_end'	=> '</th>',
 
-				'tbody_open'		=> '<tbody>',
-				'tbody_close'		=> '</tbody>',
+			'tbody_open'		=> '<tbody>',
+			'tbody_close'		=> '</tbody>',
 
-				'row_start'		=> '<tr>',
-				'row_end'		=> '</tr>',
-				'cell_start'		=> '<td>',
-				'cell_end'		=> '</td>',
+			'row_start'		=> '<tr>',
+			'row_end'		=> '</tr>',
+			'cell_start'		=> '<td>',
+			'cell_end'		=> '</td>',
 
-				'row_alt_start'		=> '<tr>',
-				'row_alt_end'		=> '</tr>',
-				'cell_alt_start'	=> '<td>',
-				'cell_alt_end'		=> '</td>',
+			'row_alt_start'		=> '<tr>',
+			'row_alt_end'		=> '</tr>',
+			'cell_alt_start'	=> '<td>',
+			'cell_alt_end'		=> '</td>',
 
-				'table_close'		=> '</table>'
-			);
+			'table_close'		=> '</table>'
+		);
 	}
 
 }
diff --git a/user_guide_src/source/changelog.rst b/user_guide_src/source/changelog.rst
index f90fa42..4a54593 100644
--- a/user_guide_src/source/changelog.rst
+++ b/user_guide_src/source/changelog.rst
@@ -387,7 +387,11 @@
       - Added check to detect if robots are pretending to be mobile clients (helps with e.g. Google indexing mobile website versions).
       - Added method ``parse()`` to allow parsing a custom user-agent string, different from the current visitor's.
 
-   -  Added support for setting :doc:`Table <libraries/table>` class defaults in a config file.
+   -  :doc:`HTML Table Library <libraries/table>` changes include:
+
+      - Added method chaining support.
+      - Added support for setting table class defaults in a config file.
+
    -  :doc:`Zip Library <libraries/zip>` method ``read_file()`` can now also alter the original file path/name while adding files to an archive.
 
 -  Core
diff --git a/user_guide_src/source/libraries/table.rst b/user_guide_src/source/libraries/table.rst
index ea0c417..6e01108 100644
--- a/user_guide_src/source/libraries/table.rst
+++ b/user_guide_src/source/libraries/table.rst
@@ -167,7 +167,8 @@
 	.. method:: set_caption($caption)
 
 		:param	string	$caption: Table caption
-		:rtype:	void
+		:returns:	CI_Table instance (method chaining)
+		:rtype:	CI_Table
 
 		Permits you to add a caption to the table.
 		::
@@ -177,7 +178,8 @@
 	.. method:: set_heading([$args = array()[, ...]])
 
 		:param	mixed	$args: An array or multiple strings containing the table column titles
-		:rtype:	void
+		:returns:	CI_Table instance (method chaining)
+		:rtype:	CI_Table
 
 		Permits you to set the table heading. You can submit an array or discrete params::
 
@@ -188,7 +190,8 @@
 	.. method:: add_row([$args = array()[, ...]])
 
 		:param	mixed	$args: An array or multiple strings containing the row values
-		:rtype:	void
+		:returns:	CI_Table instance (method chaining)
+		:rtype:	CI_Table
 
 		Permits you to add a row to your table. You can submit an array or discrete params::
 
@@ -253,7 +256,8 @@
 	.. method:: set_empty($value)
 
 		:param	mixed	$value: Value to put in empty cells
-		:rtype:	void
+		:returns:	CI_Table instance (method chaining)
+		:rtype:	CI_Table
 
 		Lets you set a default value for use in any table cells that are empty.
 		You might, for example, set a non-breaking space::
@@ -262,7 +266,8 @@
 
 	.. method:: clear()
 
-		:rtype:	void
+		:returns:	CI_Table instance (method chaining)
+		:rtype:	CI_Table
 
 		Lets you clear the table heading and row data. If you need to show multiple tables with different data you should to call this method
 		after each table has been generated to clear the previous table information. Example::
